#include "MQTTClient.h"
#include <shmem.h>
#include <pthread.h>
#include <unistd.h>
#include <msg_queue_peer.h>
#ifndef __REPORT_H_
#define __REPORT_H_
union val_t
{ 
    int b_val;  //bool类型存储空间
    int i_val;   //整形值存储空间
    float f_val;  //浮点值存储空间
};

struct std_node
{
	int key;  //唯一键值
	int type;  //数据点类型
    int dev_type;  //属于哪个设备：m0或modbus
	union val_t old_val;  //变化上报后需要更新旧值
    union val_t new_val;  //从共享内存取出最新数据，放到new_val中
    int ret;  //默认为-1，采集成功后设置为0，采集失败再置-1
};

struct report
{
    int type;//上报方式：0-不上报，客户端主动采集；1-变化上报，即连续2次值不相等；2-周期上报
    int period;//上报周期时间，单位秒，仅在type=2时有效
};

struct mqtt_server
{
    char *addr;//mqtt服务器的地址
    int port;//mqtt服务器的端口号
};

struct memory
{
    struct std_node *memory_m0;//m0设备所开辟的用于存放数据的共享内存的首地址
    struct std_node *memory_modbus;//modbus设备所开辟的用于存放数据的共享内存的首地址
    struct std_node *memory_mapp;//mapp设备所开辟的用于存放数据的共享内存的首地址
};

struct msgbuf
{
    long mtype;
    char mdata[256];
};


#endif